package com.mini.grpc.server;

import com.mini.grpc.common.Metadata;

/**
 * 服务端拦截器接口
 * 允许在RPC调用的不同阶段进行拦截和处理
 * 
 * @author Mini-gRPC
 */
public interface ServerInterceptor {
    
    /**
     * 拦截服务端调用
     * 
     * @param call 服务端调用
     * @param headers 请求头部信息
     * @param next 下一个调用处理器
     * @param <ReqT> 请求类型
     * @param <RespT> 响应类型
     * @return 服务端调用监听器
     */
    <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
            ServerCall<ReqT, RespT> call,
            Metadata headers,
            ServerCallHandler<ReqT, RespT> next);
} 